    /*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package semac.control;

import java.io.IOException;
import java.util.ArrayList;
import java.sql.*;
import java.util.GregorianCalendar;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.SAXException;
import semac.entidades.Formulario;
import semac.entidades.Permiso;

public class CtrlAccesos {
    private Conexion connection;
    private ResultSet resultado;
    private String query;
    private HttpServletRequest request;
    
    public CtrlAccesos() throws IOException, ParserConfigurationException, SAXException{
        request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
        String urlFile =  request.getRealPath("/")+ "/WEB-INF/dataBase.xml";
        connection =  new Conexion(urlFile);
    }

    //Metodo que obtiene los permisos de un rol en base al codigo del rol
    public ArrayList<Permiso> getPermisos(int codigoRol) throws ClassNotFoundException, SQLException{
        ArrayList<Permiso> permisos = new ArrayList();
        Permiso permiso;
        connection.startConnection();
        query = "select *"
                + " from semac.permiso"
                + " where codigo_rol = " + codigoRol;
        resultado = connection.execute(query);
        while (resultado.next()){
            int codigoRolPermiso = resultado.getInt("codigo_rol");
            int codigoFormulario = resultado.getInt("codigo_formulario");
            Date tempDate = resultado.getDate("fechacreacion");
            GregorianCalendar fechaCreacion = new GregorianCalendar(tempDate.getYear(), tempDate.getMonth(), tempDate.getDate());
            tempDate = resultado.getDate("fechamodificacion");
            GregorianCalendar fechaModificacion = new GregorianCalendar(tempDate.getYear(), tempDate.getMonth(), tempDate.getDate());
            int ultimoAcceso = resultado.getInt("codigo_cuenta");
            permiso = new Permiso(codigoRolPermiso,codigoFormulario,fechaCreacion,fechaModificacion,ultimoAcceso);
            permisos.add(permiso);
        }
        connection.closeConnection();
        return permisos;
    }

    //Metodo que obtiene los formularios
    public ArrayList<Formulario> getFormularios() throws ClassNotFoundException, SQLException{
        ArrayList<Formulario> formularios = new ArrayList();
        Formulario formulario;
        connection.startConnection();
        query = "select *"
                + " from semac.formularios";
        while (resultado.next()){
            int codigoFormulario = resultado.getInt("codigo_formulario");
            String nombreFormulario = resultado.getString("nombre_formulario");
            String descripcionFormulario = resultado.getString("descripcion_formulario");
            Date tempDate = resultado.getDate("fechacreacion");
            GregorianCalendar fechaCreacion = new GregorianCalendar(tempDate.getYear(), tempDate.getMonth(), tempDate.getDate());
            tempDate = resultado.getDate("fechamodificacion");
            GregorianCalendar fechaModificacion = new GregorianCalendar(tempDate.getYear(), tempDate.getMonth(), tempDate.getDate());
            int ultimoAcceso = resultado.getInt("codigo_cuenta");
            formulario = new Formulario(codigoFormulario,nombreFormulario,descripcionFormulario,fechaCreacion,fechaModificacion,ultimoAcceso);
            formularios.add(formulario);
        }
        connection.closeConnection();
        return formularios;
    }

    //Metodo que inserta un permiso en la base de datos
    public void insertPermiso(Permiso permiso) throws ClassNotFoundException,SQLException{
        connection.startConnection();
        query = "insert into semac.permiso (codigo_rol,codigo_formulario," +
                "fechacreacion,fechamodificacion,codigo_cuenta)"
                + " values(" + permiso.getCodigoRol() + "," + permiso.getCodigoFormulario()
                + ",'" + permiso.getFechaCreacion() + "','" + permiso.getFechaModificacion()
                + "'," + permiso.getUltimoAcceso() + ")";
        try{
            connection.execute(query);
        }catch(Exception e){}
        connection.closeConnection();
    }

}
